home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_jep_enemytruck.cog < prev    next >
Text File  |  1999-11-15  |  4KB  |  196 lines

  1. # Jones 3D Cog Script
  2. #
  3. # jep_enemytruck.cog
  4. #
  5. # [DS]
  6. #
  7. # (C) 1999 LucasArts Entertainment Co. All Rights Reserved
  8. # ========================================================================================
  9.  
  10. symbols
  11.  
  12. message     startup
  13. message     entered
  14. message        blocked
  15. message        aievent
  16. message        timer
  17.  
  18. thing        truck
  19. sector    startsec
  20. thing        player                        local
  21. sound        music0=mus_gen_russbold_shrt3.wav        local
  22.  
  23. int            n_OldAIMode                local
  24. int            n_CrntAIMode            local
  25. int            n_eventType                local
  26. int            e_Mode                local
  27. int            n_TimerID                local
  28.  
  29. vector        v_TruckThrust            local
  30. vector        v_TruckPos                local
  31. vector        v_TruckLook                local
  32. vector        v_IndyPos                local
  33. vector        v_ToIndy                local
  34. flex        f_dot                    local
  35.  
  36.  
  37. # ************************** CONSTANTS *******************
  38.  
  39. int            PARKED_MODE=0            local # Not moving. Initial state or may be stopped to shoot at Indy
  40. int            FORWARD_MODE=1            local # Driving forwards
  41. int            BACKWARD_MODE=2             local # Driving backwards
  42.  
  43. flex        TRUCK_FORWARD_THRUST=3.5    local
  44. flex        TRUCK_BACKWARD_THRUST=-1.5    local
  45.  
  46. int            TIMER_ID_GO_FORWARD=0        local
  47. int            TIMER_ID_GO_BACKWARD=1        local
  48.  
  49. # amount of time to drive backwards after getting blocked
  50. flex         BACKWARD_TIME=15.0            local 
  51. flex        BLOCKED_TIME=1.0            local
  52.  
  53.  
  54. int        beenthere                local
  55. #------------ Subroutines --------------------
  56. flex        goforward                local
  57. flex        stoptruck                local
  58. flex        gobackward                local
  59.  
  60.  
  61. end
  62.  
  63. # ========================================================================================
  64. code
  65.  
  66. startup:
  67.     ClearThingFlags(truck, 0x80000);
  68.     e_MODE = PARKED_MODE;
  69.     return;
  70.  
  71. aievent:
  72.     if ( GetSenderRef() != truck )
  73.     { 
  74.         return;
  75.     }
  76.  
  77.     // Always get because Indy can be getting in and out of the jeep
  78.     player = GetLocalPlayerThing();
  79.  
  80.     n_eventType        = GetParam(0);
  81.     n_CrntAIMode    = GetParam(1);
  82.     n_OldAIMode        = GetParam(2);    // only valid for certain n_eventType values
  83.  
  84.     if (n_eventType == 0x100)        // SITHAI_EVENTMODECHANGED
  85.     {
  86.         // Set PATROL mode if Truck switched to search mode (SITHAI_MODESEARCHING)
  87.         if ( !BITTEST(n_OldAIMode, 0x4) && BITTEST(n_CrntAIMode, 0x4) )
  88.         {
  89. #            DEBUGPRINT("AIEVENT:: Lost target");
  90.             if (e_Mode == PARKED_MODE)
  91.             {
  92.                 call GoForward;
  93.             }
  94.         }
  95.     }
  96.     // Firing?
  97.     if (n_eventType == 0x4000)
  98.     {
  99. #        DEBUGPRINT("AIEVENT: Truck fired on Indy");
  100.         v_IndyPos = GetThingPos(player);
  101.         v_TruckPos = GetThingPos(truck);
  102.         v_ToIndy = VectorSub(v_IndyPos, v_TruckPos);
  103.         v_ToIndy = VectorNorm(v_ToIndy);
  104.         v_TruckLook = GetThingLVec(truck);
  105.         f_Dot = VectorDot(v_ToIndy, v_TruckLook);
  106.  
  107. #        DEBUGFLEX(f_Dot,"AIEVENT: Dot to Indy");
  108.          // If Indy is behind us then stop
  109.         if ( (f_Dot < 0.0)
  110.              && (e_Mode != PARKED_MODE)
  111.              )
  112.         {
  113.             call StopTruck;
  114.         }
  115.         // If Indy is in front of truck and it is stopped then move forward
  116.         else if ( (f_Dot >= 0.0)
  117.              && (e_Mode == PARKED_MODE)
  118.              )
  119.         {
  120.             call GoForward;
  121.         }
  122.     }
  123.  
  124.     return;
  125.  
  126.  
  127.  
  128. entered:
  129.     if (GetSenderRef() != startsec) return;
  130.     if(beenthere == 1) return;
  131.     beenthere=1;
  132.     PlaySoundLocal(music0, 1.0, 0.0, 0x0, 0);
  133. #    print("truck-a-movn'");
  134.     call GoForward;
  135.     return;
  136.  
  137. blocked:
  138. #    print("truck blocked");
  139. #    DEBUGPRINT("BLOCKED:");
  140.     StopThing(truck);
  141.     if (e_Mode == FORWARD_MODE)
  142.     {
  143.         SetTimerEx(BLOCKED_TIME, TIMER_ID_GO_BACKWARD, 0, 0 );
  144.         SetTimerEx(BACKWARD_TIME + BLOCKED_TIME, TIMER_ID_GO_FORWARD, 0, 0 );
  145.     }
  146.     else if (e_Mode == BACKWARD_MODE)
  147.     {
  148.         SetTimerEx(BLOCKED_TIME, TIMER_ID_GO_FORWARD, 0, 0 );
  149.     }
  150.  
  151.  
  152.     return;
  153.  
  154.  
  155. timer:
  156.     n_TimerID = GetSenderID();
  157.     if (n_TimerID == TIMER_ID_GO_FORWARD)
  158.     {
  159.         call GoForward;
  160.     }
  161.     else if (n_TimerID == TIMER_ID_GO_BACKWARD)
  162.     {
  163.         call GoBackward;
  164.     }
  165.  
  166.     return;
  167.  
  168. # ===================================================================
  169. #    Subroutines
  170. # ===================================================================
  171.  
  172. GoForward:
  173. #    DEBUGPRINT("GoForward:");
  174.     v_TruckThrust = VectorSet(0.0, TRUCK_FORWARD_THRUST, 0.0);
  175.     SetThingThrust(truck, v_TruckThrust);
  176.     e_Mode = FORWARD_MODE;
  177.  
  178.     return;
  179.  
  180. GoBackward:
  181. #    DEBUGPRINT("GoBackward:");
  182.     v_TruckThrust = VectorSet(0.0, TRUCK_BACKWARD_THRUST, 0.0);
  183.     SetThingThrust(truck, v_TruckThrust);
  184.     e_Mode = BACKWARD_MODE;
  185.  
  186.     return;
  187.  
  188. StopTruck:
  189. #    DEBUGPRINT("Stop:");
  190.     SetThingThrust(truck, '0.0 0.0 0.0');
  191.     e_Mode = PARKED_MODE;
  192.     return;
  193.  
  194. end
  195.  
  196.